home *** CD-ROM | disk | FTP | other *** search
- #ifndef __TRACEMODULE__
- #define __TRACEMODULE__
-
- #include <Types.h>
- #include <Files.h>
- #include <Devices.h>
-
- #include "Tracks.h"
-
- typedef signed char cnum;
- typedef signed short snum;
- typedef signed long lnum;
- typedef unsigned char chex;
- typedef unsigned short shex;
- typedef unsigned long lhex;
-
- // Preference file type...
- #define kPrefsOSType 'pref'
-
-
- // These two lines will be moved to a resource file...
- #define kInstallTrace 20 // csCode for target drivers Install Trace request
- #define kRemoveTrace 21 // csCode for target drivers Remove Trace request
-
-
- // These are resource types/ID for the prefrence file, for the name
- // of the target driver (ie .ASNA, in resource kDRp in their pref file..)
- #define kDrvrNameResType 'kDRp'
- #define kDrvrNameResID 128
-
- #define kStackCopyLength 24
-
- void StackPeek(short level, Ptr *procNamePtrLoc, short *procNameLenLoc,
- Ptr *callbyNamePtrLoc, short *callbyNameLenLoc, Ptr *stackPtrLoc);
- pascal Boolean UTLock(Boolean *flag);
-
- typedef struct
- {
- OSType fCheckID; // 'TRAC' for finding this block in memory
- OSType fMyCreator; // Used when creating a trace file
- OSType fMyFileType; // Used when creating a trace file
- lhex fTraceBuffSize; // Size of the trace buffer
-
- snum fTraceBuffSizeIndex; // Keeps track of which of several possible buffer sizes
-
- Ptr fBuffStartPtr; // Points to start of buffer
- Ptr fBuffEndPtr; // Points to last byte of buffer
- Ptr fNextReadPtr; // Points to start of next read
- Ptr fNextWritePtr; // Points to start of next write
- MaskType fTraceMask; // The trace mask data a lhex[4]
- MaskType fBreakMask; // ditto for breakmask...
-
- Boolean fTraceLock; // Locks out interrupting tracing requests
- Boolean fBufferEnabled; // True when trace buffer allocated
- Boolean fTraceOnline; // True when online (tracing)
- Boolean fFileEnabled; // True when trace file is enabled
- Boolean fAutomaticWrite; // True if trace file written automatically
- Boolean fLockedOutFlag; // True if tracing request was locked out
- shex fMaxRecordSize; // Maximum size trace record allowed
- snum fFileRefNum; // Trace File refNum
- snum fVRefNum; // Trace File vRefNum (volume)
- lhex fBytesWritten; // Running count of bytes written to file
- snum fWriteErr; // Set if write error occurred
- snum fDriversRefNum; // Refnum of the target driver
- chex fTimeStampType; // 1=DateTime, 2=TickCount
- Boolean fFileIsOpen; // True when trace file open
- char fTraceFileName[32]; // 31 bytes max Pascal string
- char fDriverPStrName[32]; // The .DrvrName, as a pascal string... (.ASNA)
- Boolean fDebugMarkUnset; // If set, will do _Debugger before returning to target driver...
- Boolean fBreakOnceThenClear; // If set, breakpoint will clear upon its encounter
- Boolean fTraceOnStartup; // Shows if it should break on status... this
- // is read from a pref file and if true, inserted
- // here so it can be reproduced at next startup...
- } TraceGlobals;
-
- typedef struct
- {
- short length;
- char diagID;
- char partCode;
- unsigned long timeStamp;
- char timeStampType;
- char formatID;
- } NewRecordTemplate;
-
- // This is used like by BlockAppend calls.
- typedef struct
- {
- chex *Begin, *End;
- chex *Mark;
- } SafeMemBlock;
-
- // These are from Tim Enwall's iacDriver in develop
- // New driver interface to be called by DriverGlue.a
- #ifdef USEPASCAL
- pascal OSErr TControl(CntrlParam *ctlPB, DCtlPtr dCtl);
- pascal OSErr TClose(CntrlParam *ctlPB, DCtlPtr dCtl);
- pascal OSErr TOpen(CntrlParam *ctlPB, DCtlPtr dCtl);
- pascal OSErr TPrime(CntrlParam *ctlPB, DCtlPtr dCtl);
- pascal OSErr TStatus(CntrlParam *ctlPB, DCtlPtr dCtl);
- #else
-
- OSErr TControl(CntrlParam *ctlPB, DCtlPtr dCtl);
- OSErr TClose(CntrlParam *ctlPB, DCtlPtr dCtl);
- OSErr TOpen(CntrlParam *ctlPB, DCtlPtr dCtl);
- OSErr TPrime(CntrlParam *ctlPB, DCtlPtr dCtl);
- OSErr TStatus(CntrlParam *ctlPB, DCtlPtr dCtl);
-
- #endif
-
- /* Trace code external interface */
- pascal void TraceProc(long refcon, char diagID, char partCode,
- char formatID, long data1, long data2, long data3);
-
- pascal short TraceEntry(TraceGlobals *globals, short csCode, TraceParamBlock *paramPtr, DCtlPtr dCtl);
-
- /* Internal use only */
- snum CloseTraceFile(TraceGlobals *globals);
- snum DisableTraceBuffer(TraceGlobals *globals);
- snum DisableTraceFile(TraceGlobals *globals);
- snum EnableTraceBuffer(TraceGlobals *globals, TraceParamBlock *paramPtr);
- snum SetTraceFileName(TraceGlobals *globals, TraceParamBlock *paramPtr);
- snum GetBufferSpace(TraceGlobals *globals, shex amountOfSpace, Boolean *dataLost);
- void GetNewRecord(TraceGlobals *globals, shex recordSize, Ptr *recordAddr,
- shex *splitSize, Ptr *secondAddr);
- snum GetTraceProc(TraceGlobals *globals, TraceParamBlock *paramPtr);
- snum GetTraceStatus(TraceGlobals *globals, TraceParamBlock *paramPtr);
- void InitTrace(TraceGlobals *globals);
- snum OpenTraceFile(TraceGlobals *globals);
- snum ReadTrace(TraceGlobals *globals, TraceParamBlock *paramPtr);
- snum ResetTrace(TraceGlobals *globals);
- snum SetTraceOffline(TraceGlobals *globals);
- snum SetTraceOnline(TraceGlobals *globals, char *drvrName);
- snum WriteTraceBuffer(TraceGlobals *globals);
-
-
- snum SendMaskToCdev(TraceGlobals *globals, TraceParamBlock *paramPtr,short csCode);
- snum GetMaskFromCDEV(TraceGlobals *globals, TraceParamBlock *paramPtr,short csCode);
- snum ResetEOF(TraceGlobals *globals);
- snum ClearTraceBuffer(TraceGlobals *globals);
- snum ShowGlobals(TraceGlobals *globals);
- void DoCopyMask(MaskType src,MaskType dst);
- #endif
-
-
-
-